package cn.gson.crm.model.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import cn.gson.crm.model.entity.Classes;
import cn.gson.crm.model.entity.DaGang;
import cn.gson.crm.model.entity.Emp;
import cn.gson.crm.model.entity.Exercises;
import cn.gson.crm.model.entity.Student;
import cn.gson.crm.model.entity.StudnetClassShadow;
import cn.gson.crm.model.entity.ZhangJie;

@Mapper
public interface ClassesMapper {
	/**
	 * 获取所有班级
	 * @param c
	 * @return
	 */
	List<Classes> listClasses(Classes c);
	
	/**
	 * 获取所有教员
	 * @param e
	 * @return
	 */
	List<Emp> listJy(Emp e);
	
	/**
	 * 获取所有班主任
	 * @param e
	 * @return
	 */
	List<Emp> listBzr(Emp e);
	
	/**
	 * 通过id获取班级
	 * @param id
	 * @return
	 */
	List<Classes> listClasses(Long id);

	/**
	 * 通过班级id返回班级学生中间表的所有学生id
	 * @param id
	 * @return
	 */
	List<Long> returnAllclastuid(Long id);
	
	
	
	/**
	 * 通过学生id查询学生信息
	 * @param sid
	 * @return
	 */
	Student clastulist(Student sid);
	
	/**
	 * 修改班级信息
	 * @param cla
	 */
	void editClass(Classes cla);
	
	/**
	 * 通过班级id，班级名字查询班级影子表的id。
	 * @param id
	 * @param className
	 * @return
	 */
	Long obtainscsid(@Param("id")Long id,@Param("className") String className);
	
	/**
	 * 通过对象查询班级影子表
	 * @param scs
	 * @return
	 */
	List<StudnetClassShadow> scstree(StudnetClassShadow scs);
	
	/**
	 * 查询所有班级影子表
	 * @return
	 */
	List<StudnetClassShadow> listclass();
	/**
	 * 为班级学生中间表添加数据
	 * @param savastucla
	 */
	void saveclassOrStudent(Map<String, Object> savastucla);


	/**
	 * 将学生添加到班级修改学生状态为在读
	 * @param student
	 */
	void editstudent(Student student);
	
	/**
	 * 通过班级id查询一个班有多少学生
	 * @param id
	 * @return
	 */
	Long countclassstudent(Long id);
	
	/**
	 * 通过id查询班级信息
	 * @param id
	 * @return
	 */
	Classes selectIdclassmessage(Long id);
	
	/**
	 * 查询所有阶段内容
	 * @return
	 */
	List<DaGang> outlinelist();

	/**
	 * 通过阶段id查询所有章节
	 * @param id
	 * @return
	 */
	List<ZhangJie> allchaterlist(Long id);
	
	/**
	 * 通过章节id查询所有试题题
	 * @param id
	 * @param type 
	 * @return
	 */
	List<Exercises> allexerciseslist(Exercises exercises);
	
	/**
	 * 通过班级id获取作业id
	 * @return
	 */
	List<Long> selectexceid();
	
	/**
	 * 保存作业试题中间表
	 * @param savaworkorexce
	 */
	void saveworkAndexce(Map<String, Object> savaworkorexce);
	
	/**
	 * 通过学生id放回班级信息
	 * @param id
	 * @return
	 */
	Long returnclassid(Long id);
	
	/**
	 * 查询所有班级作业中间表的班级
	 * @return
	 */
	List<Long> selectclaid();
	
	/**
	 * 查询班级作业中间表作业id
	 * @return
	 */
	List<Long> selectwordid();

	Long selectWorkJournalid(Long id);

	List<StudnetClassShadow> graduatescstree(StudnetClassShadow scs);

	List<StudnetClassShadow> guticationclass();
	
	/**
	 * 删除班级中间的学生班级id
	 * @param sid
	 */
	void deletesid(Long sid);
	
	/**
	 * 通过班级名称查询影子表名称
	 * @param newcla
	 * @return
	 */
	StudnetClassShadow selectstuName(String newcla);
	
	/**
	 * 通过学生id、姓名查询影子数据
	 * @param s
	 * @return
	 */
	StudnetClassShadow selectstuid(StudnetClassShadow s);
	
	/**
	 * 查询未毕业班级
	 * @param c
	 * @return
	 */
	List<Classes> listgraduationClasses(Classes c);
	
}
